//
//  MACacheDelegate.h
//  Pods
//
//  Created by elvisgao on 2019/11/27.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@protocol QMACacheDelegate <NSObject>

/**
 * @brief 缓存数据
 * 如果forCurrentUid为NO，缓存数据和账号无关，切换账号的时候，同一个key对应同一份数据
 * 如果forCurrentUid为YES，缓存数据和账号绑定，切换账号的时候，同一个key对应同多份数据
 *
 * @param data 要缓存的数据，必须是实现NSCoding的对象；data是nil的时候，相当于清除这个缓存
 * @param key key
 * @param forCurrentUid  是否和账号绑定
 */
- (void)cacheData:(id<NSCoding> _Nullable)data
           forKey:(NSString *)key
    forCurrentUid:(BOOL)forCurrentUid;

/**
 * @brief 加载数据
 *
 * @param key key
 * @param forCurrentUid 是否和账号绑定
 *
 * @return id 缓存的数据；如果没有值，就返回nil
 */
- (nullable id)loadDataForKey:(NSString *)key
       forCurrentUid:(BOOL)forCurrentUid;

/**
 * @brief 返回链接对应的下载后本地路径，如果没有存本地，返回nil
 *
 * @param url 下载链接
 *
 * @return NSString 本地路径
 */
- (nullable NSString *)resourceLocalPathForUrl:(NSString *)url;

@end

NS_ASSUME_NONNULL_END
